Set the filename entry's base folder when a recent-folder is selected
authorFederico Mena Quintero <federico@gnome.org>
Wed, 29 Jun 2011 22:58:10 +0000 (17:58 -0500)
committerFederico Mena Quintero <federico@gnome.org>
Sat, 2 Jul 2011 00:07:11 +0000 (19:07 -0500)
This lets the filename entry do completion relative to the selected recent-folder.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
gtk/gtkfilechooserdefault.c

index 3f4064148490acec60b26d3409f145d8c9a7d5a0..91a516e0461c40bab1750fd0b8e685ea4c5efe71 100644 (file)
@@ -6588,7 +6588,6 @@ update_chooser_entry (GtkFileChooserDefault *impl)
 
   /* no need to update the file chooser's entry if there's no entry */
   if (impl->operation_mode == OPERATION_MODE_SEARCH ||
-      impl->operation_mode == OPERATION_MODE_RECENT ||
       !impl->location_entry)
     return;
 
@@ -6607,7 +6606,10 @@ update_chooser_entry (GtkFileChooserDefault *impl)
 
   if (closure.num_selected == 0)
     {
-      goto maybe_clear_entry;
+      if (impl->operation_mode == OPERATION_MODE_RECENT)
+       _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), NULL);
+      else
+       goto maybe_clear_entry;
     }
   else if (closure.num_selected == 1)
     {
@@ -6648,6 +6650,20 @@ update_chooser_entry (GtkFileChooserDefault *impl)
 
           return;
         }
+      else if (impl->operation_mode == OPERATION_MODE_RECENT
+              && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+       {
+         GFile *folder;
+
+         /* Set the base folder on the name entry, so it will do completion relative to the correct recent-folder */
+
+         gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), &closure.first_selected_iter,
+                             MODEL_COL_FILE, &folder,
+                             -1);
+         _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), folder);
+         g_object_unref (folder);
+         return;
+       }
     }
   else
     {